package com.loeng.module.system.api.dict;

import com.loeng.framework.common.util.object.BeanUtils;
import com.loeng.module.system.api.dict.dto.DictDataRespDTO;
import com.loeng.module.system.dal.dataobject.dict.DictDataDO;
import com.loeng.module.system.service.dict.DictDataService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

import static com.loeng.framework.common.util.collection.CollectionUtils.convertList;

/**
 * 字典数据 API 实现类
 *
 * @author loeng zhuo
 */
@Service
public class DictDataApiImpl implements DictDataApi {

    @Resource
    private DictDataService dictDataService;

    /**
     * 从缓存中 解析获得指定的字典数据
     *
     * @param dictType  字典类型
     * @param label 字典数据标签
     * @return 字典数据
     */
    @Override
    public DictDataRespDTO parseDictData(String dictType, String label) {
        DictDataDO dictData = dictDataService.parseDictData(dictType, label);
        return BeanUtils.toBean(dictData, DictDataRespDTO.class);
    }

    /**
     * 获得指定字典类型的字典数据列表
     *
     * @param dictType 字典类型
     * @return 字典数据列表
     */
    @Override
    public List<DictDataRespDTO> getDictDataList(String dictType) {
        List<DictDataDO> list = dictDataService.getDictDataListByDictType(dictType);
        return BeanUtils.toBean(list, DictDataRespDTO.class);
    }

    /**
     * 获得字典数据标签列表
     *
     * @param dictType 字典类型
     * @return 字典数据标签列表
     */
    @Override
    public List<String> getDictDataLabelList(String dictType) {
        List<DictDataRespDTO> dictDataList = getDictDataList(dictType);
        return convertList(dictDataList, DictDataRespDTO::getLabel);
    }
}
